package middle;

import java.util.Scanner;

/**
 * ZJ27 字典序
 * @author d3y1
 */
public class ZJ27{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        
        while(in.hasNext()){
            solution(in);
        }
    }

    /**
     * 模拟法: 字典树
     * @param in
     */
    private static void solution(Scanner in){
        long n = in.nextLong();
        long k = in.nextLong();
        
        long result = findKthNumber(n, k);
        
        System.out.println(result);
    }

    /**
     * 查找第K个数
     * @param n
     * @param k
     * @return
     */
    private static long findKthNumber(long n, long k){
        // 从根节点下面的第一个结点1开始遍历
        long curr = 1;
        // 从1开始往后按字典序从小到大走k-1步到达的就是 字典序的第K小数字
        k--;

        while(k > 0){
            // 得到以当前结点为根的所有子树节点数目
            long count = countChildNodes(n, curr);

            // 如果k大于等于当前根节点下所有子树结点的数目, 就向右侧节点走(->2->3->4->5->6->7->8->9) 字典序上升count位
            if(count <= k){
                // 减去已经遍历的个数
                k -= count;
                // 根节点右移
                curr++;
            }
            // 如果k小于当前根节点下所有子树结点的数目, 说明结果就在当前根节点的子树结点中
            else{
                // 减去根节点的数量1
                k--;
                // 将根结点移动到下一层(每一层10个结点)
                curr *= 10;
            }
        }

        // 最终k=0时 得到结果
        return curr;
    }

    /**
     * 计算以curr为根的所有子树节点数目，所有节点的值必须<=n
     * @param n
     * @param curr
     * @return
     */
    private static long countChildNodes(long n, long curr){
        long count = 0;
        long first = curr;
        long last = curr;
        while (first <= n) {
            // 每一层的数目
            count += Math.min(last, n) - first + 1;
            first = first * 10;
            last = last * 10 + 9;
        }
        return count;
    }
}